﻿using BCEntity.TMS.Contraband.ContrabandCategory;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace BCData.TMS.Contraband.ContrabandCategory
{
    public interface IContrabandCategoryData
    {
        /// <summary>
        /// 删除违禁品分类
        /// </summary>
        /// <param name="contrabandCategoryId">违禁品分类Id</param>
        /// <returns></returns>
        Task<int> DeleteAsync(int contrabandCategoryId);

        /// <summary>
        /// 获取违禁品分类
        /// </summary>
        /// <param name="contrabandCategoryId">违禁品分类Id</param>
        /// <returns></returns>
        Task<ContrabandCategoryEntity> GetEntityAsync(int contrabandCategoryId);

        /// <summary>
        /// 添加违禁品分类
        /// </summary>
        /// <param name="entity">违禁品分类信息</param>
        /// <returns></returns>
        Task<ContrabandCategoryEntity> InsertAsync(ContrabandCategoryEntity entity);

        /// <summary>
        /// 修改违禁品分类
        /// </summary>
        /// <param name="entity">违禁品分类信息</param>
        /// <returns></returns>
        Task<ContrabandCategoryEntity> UpdateAsync(ContrabandCategoryEntity entity);

        /// <summary>
        /// 根据ContrabandCategory(违禁品分类)获取违禁品分类
        /// </summary>
        /// <param name="contrabandCategory">违禁品分类</param>
        /// <returns></returns>
        Task<ContrabandCategoryEntity> GetEntityByContrabandCategory(string contrabandCategory);

        /// <summary>
        /// 获取违禁品分类列表
        /// </summary>
        /// <returns></returns>
        Task<IEnumerable<ContrabandCategoryEntity>> GetList(string contrabandCategory);

        /// <summary>
        /// 获取违禁品分类
        /// </summary>
        /// <param name="contrabandCategory">违禁品分类</param>
        /// <param name="createStartDate">创建开始日期</param>
        /// <param name="createEndDate">创建结束日期</param>
        /// <param name="pageIndex">页号</param>
        /// <param name="pageSize">每页数据条数</param>
        /// <returns></returns>
        Task<(IEnumerable<ContrabandCategoryEntity>, int)> Query(string contrabandCategory, DateTime? createStartDate, DateTime? createEndDate, int pageIndex, int pageSize);
    }
}